package com.ruoyi.controller;

import wiki.xsx.core.pdf.component.image.XEasyPdfImage;
import wiki.xsx.core.pdf.component.text.XEasyPdfText;
import wiki.xsx.core.pdf.doc.XEasyPdfDefaultFontStyle;
import wiki.xsx.core.pdf.doc.XEasyPdfDocument;
import wiki.xsx.core.pdf.doc.XEasyPdfPage;
import wiki.xsx.core.pdf.handler.XEasyPdfHandler;

import java.awt.*;
import java.io.File;

import static com.ruoyi.common.config.RuoYiConfig.getDownloadPath;
import cn.hutool.core.util.StrUtil;

public class Pdf {

    // 定义pdf输出路径
    public String sourcePath = "E:\\Code\\JAVA\\RuoYi-Vue\\ruoyi-ray\\src\\main\\resources\\static\\pdfdemo.pdf";

    // 定义pdf输出路径
    public String outputPath = "E:\\Code\\JAVA\\RuoYi-Vue\\output.pdf";

    public  XEasyPdfDocument document;

    public XEasyPdfPage page;

    //默认颜色
    public Color publicColor = new Color(1, 1, 255);

    //默认字大小
    public Float fontSize = 10.9F;
    public void init(){
        this.document = XEasyPdfHandler.Document.load(sourcePath);
//        this.outputPath = getDownloadPath()+"output.pdf";

        this.outputPath = "./ruoyi-ray/target/classes/static/pdfprint.pdf";
        System.out.println("outputPath = " + outputPath);
        this.page = document.getPageList().get(0);
    }

    public void close(){
        // 保存文档并关闭
        this.document.save(outputPath).close();
    }

    public void set医院名称(String text){
        // 创建文本组件
        XEasyPdfText addText = XEasyPdfHandler.Text.build(text)
                .setFontColor(publicColor)//设置颜色
                .setDefaultFontStyle(XEasyPdfDefaultFontStyle.LIGHT)// 使用细体字
                .setFontSize(17F)//设置字体大小
                .setCharacterSpacing(0.8F)
                .setPosition(237F,785);//设置绝对位置
//                .setMarginLeft(260F);//设置边距

        // 将组件添加到页面
        this.page.addComponent(addText);
        // 保存文档并关闭
//        this.document.save(outputPath).close();
    }



    public void set送检科室(String text){
        // 创建文本组件
        XEasyPdfText addText = XEasyPdfHandler.Text.build(text)
                .setFontColor(publicColor)//设置颜色
                .setDefaultFontStyle(XEasyPdfDefaultFontStyle.LIGHT)// 使用细体字
                .setFontSize(11F)//设置字体大小
                .setCharacterSpacing(1F)
                .setPosition(119F,720F);
        // 将组件添加到页面
        this.page.addComponent(addText);
        // 保存文档并关闭
//        this.document.save(outputPath).close();
    }


    public void set送检医生(String text){
        // 创建文本组件
        addText(text,300F,721F);
    }

    public void set检查医生(String text){
        // 创建文本组件
        addText(text,485F,722F);
    }


    public void set检查ID(String text){
        // 创建文本组件
        addText(text,115F,680F);
    }
    public void set姓名(String text){
        // 创建文本组件
        addText(text,115F,665F);
    }

    public void set部位(String text){
        // 创建文本组件
        addText(text,115F,649F);
    }

    public void set检查号(String text){
        // 创建文本组件
        addText(text,240F,680F);
    }

    public void set性别(String text){
        // 创建文本组件
        addText(text,240F,664F);
    }

    public void set侧别(String text){
        // 创建文本组件
        addText(text,240F,649F);
    }


    public void set生日(String text){
        // 创建文本组件
        addText(text,363F,680F, this.fontSize,0.2F);
    }

    public void set身高(String text){
        // 创建文本组件
        addText(text,363F,665F, this.fontSize,0.22F);
    }

    public void setTel(String text){
        // 创建文本组件
        addText(text,363F,649F, this.fontSize,0.25F);
    }

    public void setAge(String text){
        // 创建文本组件
        addText(text,489F,680F, this.fontSize,0.21F);
    }

    public void setWeight(String text){
        // 创建文本组件
        addText(text,488F,665F, this.fontSize,0.19F);
    }








    public void set病人住址(String text){
        // 创建文本组件
        addText(text,115F,633F);
    }


    public void set检查日期(String text){
        // 创建文本组件
        addText(text,116F,584F);
    }




    public void set骨密度(String text){
        // 创建文本组件
        addText(text,116F,333F);
    }


    public void set骨峰值(String text){
        // 创建文本组件
        addText(text,295F,333F , this.fontSize,0.2F);
    }

    public void set骨年龄(String text){
        // 创建文本组件
        addText(text,295F,317F, this.fontSize,0.2F);
    }


    public void setT值(String text){
        // 创建文本组件
        addText(text,470F,333F, this.fontSize,0.2F);
    }

    public void setZ值(String text){
        // 创建文本组件
        addText(text,470F,317F, this.fontSize,0.2F);
    }


    public void set骨密度诊断(String text){
        // 创建文本组件
        addText(text,250F,200F, 12F,0.2F,new Color(0,0,0));
    }

    public void set建议(String text){
        // 创建文本组件

        String[] split = StrUtil.split(text, 38);
        Float h = 145F;
        for (String str:split){
            addText(str,60F,h, 12F,0.2F,new Color(0,0,0));
            h=h-12F;
        }


    }

    public void addImage(String file,Float x,Float y,Float width, Float height){
        XEasyPdfImage image = XEasyPdfHandler.Image.build(new File(file)).setPosition(x,y).setWidth(width).setHeight(height);
        this.page.addComponent(image);
    }

    public void set骨密度诊断图片(String file){
        addImage(file,240F,215F,90F,60F);
    }

    public void set骨密度曲线图(String file){
        addImage(file,265F,361F,266F,217F);
    }

    public void set骨密度X图(String file){
        addImage(file,100F,381F,160F,180F);
    }


//    public void addImage(String file){
//        XEasyPdfImage image = XEasyPdfHandler.Image.build(new File(file)).setPosition(240F,215F).setHeight(60F).setWidth(90F);
//        // 创建文本组件
//        // 将组件添加到页面
//        this.page.addComponent(image);
//    }



    public void addText(String text,Float x,Float y,Float size,Float spacing ,Color color){
        // 创建文本组件
        XEasyPdfText addText = XEasyPdfHandler.Text.build(text)
                .setFontColor(color)//设置颜色
                .setDefaultFontStyle(XEasyPdfDefaultFontStyle.LIGHT)// 使用细体字
                .setFontSize(size)//设置字体大小
                .setCharacterSpacing(spacing)
                .setPosition(x,y);//设置绝对位置


        // 将组件添加到页面
        this.page.addComponent(addText);
    }


    public void addText(String text,Float x,Float y,Float size,Float spacing ){
        // 创建文本组件
        XEasyPdfText addText = XEasyPdfHandler.Text.build(text)
                .setFontColor(publicColor)//设置颜色
                .setDefaultFontStyle(XEasyPdfDefaultFontStyle.LIGHT)// 使用细体字
                .setFontSize(size)//设置字体大小
                .setCharacterSpacing(spacing)
                .setPosition(x,y);//设置绝对位置


        // 将组件添加到页面
        this.page.addComponent(addText);
        // 保存文档并关闭
    }

    public void addText(String text,Float x,Float y,Float size,Color color){
        // 创建文本组件
        XEasyPdfText addText = XEasyPdfHandler.Text.build(text)
                .setFontColor(color)//设置颜色
                .setDefaultFontStyle(XEasyPdfDefaultFontStyle.LIGHT)// 使用细体字
                .setFontSize(size)//设置字体大小
                .setCharacterSpacing(1F)
                .setPosition(x,y);//设置绝对位置
//                .setMarginTop(y)//设置距离顶部
//                .setMarginLeft(x);//设置边距

        // 将组件添加到页面
        this.page.addComponent(addText);
        // 保存文档并关闭
//        this.document.save(outputPath).close();
    }


    public void addText(String text,Float x,Float y,Float size){
        // 创建文本组件
        XEasyPdfText addText = XEasyPdfHandler.Text.build(text)
                .setFontColor(publicColor)//设置颜色
                .setDefaultFontStyle(XEasyPdfDefaultFontStyle.LIGHT)// 使用细体字
                .setFontSize(size)//设置字体大小
                .setCharacterSpacing(1F)
                .setPosition(x,y);//设置绝对位置
//                .setMarginTop(y)//设置距离顶部
//                .setMarginLeft(x);//设置边距

        // 将组件添加到页面
        this.page.addComponent(addText);
        // 保存文档并关闭
//        this.document.save(outputPath).close();
    }


    public void addText(String text,Float x,Float y,Color color){
        // 创建文本组件
        XEasyPdfText addText = XEasyPdfHandler.Text.build(text)
                .setFontColor(color)//设置颜色
                .setDefaultFontStyle(XEasyPdfDefaultFontStyle.LIGHT)// 使用细体字
                .setFontSize(fontSize)//设置字体大小
                .setCharacterSpacing(1F)
                .setPosition(x,y);//设置绝对位置
//                .setMarginTop(y)//设置距离顶部
//                .setMarginLeft(x);//设置边距

        // 将组件添加到页面
        this.page.addComponent(addText);
        // 保存文档并关闭
//        this.document.save(outputPath).close();
    }


    public void addText(String text,Float x,Float y){
        // 创建文本组件
        XEasyPdfText addText = XEasyPdfHandler.Text.build(text)
                .setFontColor(publicColor)//设置颜色
                .setDefaultFontStyle(XEasyPdfDefaultFontStyle.LIGHT)// 使用细体字
                .setFontSize(fontSize)//设置字体大小
                .setCharacterSpacing(1F)
                .setPosition(x,y);//设置绝对位置
//                .setMarginTop(y)//设置距离顶部
//                .setMarginLeft(x);//设置边距

        // 将组件添加到页面
        this.page.addComponent(addText);
        // 保存文档并关闭
//        this.document.save(outputPath).close();
    }

    public void addText(String text){
        // 创建文本组件
        XEasyPdfText addText = XEasyPdfHandler.Text.build(text)
                .setFontColor(publicColor)//设置颜色
                .setDefaultFontStyle(XEasyPdfDefaultFontStyle.LIGHT)// 使用细体字
                .setFontSize(fontSize)//设置字体大小
                .setCharacterSpacing(1F)
                .setPosition(100F,100F);//设置绝对位置
//                .setMarginTop(105F)//设置距离顶部
//                .setMarginLeft(119F);//设置边距

        // 将组件添加到页面
        this.page.addComponent(addText);
        // 保存文档并关闭
//        this.document.save(outputPath).close();
    }


}
